﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Espam.Idiomas.Decimo.Tesis.Negocio;
using System.Drawing;

namespace Espam.Idiomas.Decimo.Tesis.Web
{
    public partial class UI_NewLocation : System.Web.UI.Page
    {
        string validaSession = "";
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                
                Response.Cache.SetCacheability(HttpCacheability.ServerAndNoCache);
                Response.Cache.SetAllowResponseInBrowserHistory(false);
                Response.Cache.SetNoStore();

                if (Session["userEspamIdiomasVarSession001"] == null || Session["rolEspamIdiomasVarSession003"] == null)
                {
                    validaSession = "NoHaIniciadoSession";
                    Response.Redirect("UI_Login.aspx?validaSession=" + validaSession);
                }
                else if (Session["userEspamIdiomasVarSession001"] != null && Session["rolEspamIdiomasVarSession003"].ToString() == "Docente")
                {
                    Response.Redirect("UI_DashboardTeacher.aspx");
                }
                else if (Session["userEspamIdiomasVarSession001"] != null && Session["rolEspamIdiomasVarSession003"].ToString() == "Administradores")
                {
                    CargarUbicaciones();
                    btnGuardarUbicacion.Attributes.Add("onclick", " this.disabled = true,this.value='Procesando...'; " + ClientScript.GetPostBackEventReference(btnGuardarUbicacion, null) + ";");

                }
                else if (Session["userEspamIdiomasVarSession001"] != null && Session["rolEspamIdiomasVarSession003"].ToString() == "Alumno")
                {
                    Response.Redirect("UI_DashboardStudents.aspx");
                }
            }
            else
            {
                lblvalida.Text = "";
                lblvalida.Visible = false;
            }
        }
        protected void CargarUbicaciones()
        {
            ListadoUbicacionModulo oListado = new ListadoUbicacionModulo();
            List<UbicacionModulos> listaUbicaciones = new List<UbicacionModulos>();
            oListado.idEstado = 1;
            listaUbicaciones = oListado.getUbicaciones();
            gvUbicaciones.DataSource = listaUbicaciones;
            gvUbicaciones.DataBind();
        }

        protected void btnGuardarUbicacion_Click(object sender, EventArgs e)
        {
            string mensaje = "";
            ListadoUbicacionModulo oUbicaciones = new ListadoUbicacionModulo();
            if (Page.IsValid)
            {
                if (btnGuardarUbicacion.Text == "Guardar Ubicación")
                {
                    oUbicaciones.descripcionUbicacion = txtHoraUbicacion.Text.ToUpper();
                    mensaje = oUbicaciones.InsertUbicaciones();
                    lblvalida.Text = mensaje;
                    if (mensaje == "UBICACIÓN GUARDADA CORRECTAMENTE")
                    {
                        ActivaSuccess();
                    }
                    else
                    {
                        ActivaFail();
                    }
                    CargarUbicaciones();
                    LimpiarCampos();
                }
                else if (btnGuardarUbicacion.Text == "Editar Ubicación")
                {
                    try
                    {
                        oUbicaciones.descripcionUbicacion = txtHoraUbicacion.Text;
                        oUbicaciones.idUbicacion = (int)Session["idUbiEspamIdioass"];
                        mensaje = oUbicaciones.EditUbicacion();
                        lblvalida.Text = mensaje;
                        if (mensaje == "UBICACIÓN EDITADA CORRECTAMENTE")
                        {
                            ActivaSuccess();
                        }
                        else
                        {
                            ActivaFail();
                        }
                        Session.Remove("idUbiEspamIdioass");
                        LimpiarCampos();
                        NuevaUbicacion();
                    }
                    catch (Exception)
                    {

                        Response.Redirect("UI_NewLocation.aspx");
                    }
                    
                }
                
            }
            else
            {
                Response.Redirect("UI_NewLocation.aspx");
            }
        }
        protected void ActivaSuccess()
        {
            lblvalida.ForeColor = Color.Green;
            lblvalida.Visible = true;
        }
        protected void ActivaFail()
        {
            lblvalida.ForeColor = Color.Red;
            lblvalida.Visible = true;
        }

        protected void gvUbicaciones_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            string mensaje = "";
            ListadoUbicacionModulo oUbicacion = new ListadoUbicacionModulo();
            int index = e.RowIndex;
            int id = (int)gvUbicaciones.DataKeys[index].Value;
            oUbicacion.idUbicacion = id;
            oUbicacion.idEstado = 2;
            mensaje = oUbicacion.DeleteUbicacion();
            lblvalida.Text = mensaje;
            ActivaSuccess();
            CargarUbicaciones();
            LimpiarCampos();

        }
        private void LimpiarCampos()
        {
            txtHoraUbicacion.Text = string.Empty;
        }

        protected void gvUbicaciones_SelectedIndexChanged(object sender, EventArgs e)
        {
            List<UbicacionModulos> lista = new List<UbicacionModulos>();
            ListadoUbicacionModulo oUbicacion = new ListadoUbicacionModulo();
            GridViewRow row = gvUbicaciones.SelectedRow;
            int id = Convert.ToInt32(gvUbicaciones.DataKeys[row.RowIndex].Value);
            oUbicacion.idUbicacion = id;
            lista = oUbicacion.GetUbicationById();
            txtHoraUbicacion.Text = lista[0].descripcionUbicacion;
            Session["idUbiEspamIdioass"] = id;
            lblvalida.Text = string.Empty;
            lblvalida.Visible = false;
            EditarUbicacion();

        }
        private void EditarUbicacion()
        {
            btnCancelar.Visible = true;
            btnGuardarUbicacion.Text = "Editar Ubicación";
        }

        protected void btnCancelar_Click(object sender, EventArgs e)
        {
            Response.Redirect("UI_NewLocation.aspx");
        }
        private void NuevaUbicacion()
        {
            btnGuardarUbicacion.Text = "Guardar Ubicación";
            btnCancelar.Visible = false;

        }
    }
}